package cn.core.data.mapper;

import cn.core.data.eo.DataManipulationLog;
import cn.core.data.qo.DataManipulationLogQO;
import cn.core.data.vo.DataManipulationLogVO;
import cn.core.tool.util.Paging;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;

/**
 * 数据操作日志 mybatis 持久化接口
 */
@Mapper
public interface DataManipulationLogMapper {

  /**
   * 数据操作日志 >>> 新增
   */
  public void saveDataManipulationLog(@Param("eo") DataManipulationLog eo) throws Exception;

  /**
   * 数据操作日志 >>> 批量新增
   */
  public void saveBatchDataManipulationLog(@Param("paging") Paging<?> paging, @Param("eos") Collection<DataManipulationLog> eos) throws Exception;

  /**
   * 数据操作日志 >>> 全字段更新
   */
  public void updateDataManipulationLog(@Param("eo") DataManipulationLog eo) throws Exception;

  /**
   * 数据操作日志 >>> 批量全字段更新
   */
  public void updateBatchDataManipulationLog(@Param("paging") Paging<?> paging, @Param("eos") Collection<DataManipulationLog> eos) throws Exception;

  /**
   * 数据操作日志 >>> 部分字段更新
   */
  public void updateSome(@Param("eo") DataManipulationLog eo) throws Exception;

  /**
   * 数据操作日志 >>> 批量部分字段更新
   */
  public void updateSomeBatch(@Param("paging") Paging<?> paging, @Param("eos") Collection<DataManipulationLog> eos) throws Exception;

  /**
   * 数据操作日志 >>> 条件更新
   */
  public void updateQuery(@Param("eo") DataManipulationLog eo, @Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 删除
   */
  public void removeDataManipulationLog(@Param("eo") DataManipulationLog eo) throws Exception;

  /**
   * 数据操作日志 >>> 批量删除
   */
  public void removeBatchDataManipulationLog(@Param("eos") Collection<DataManipulationLog> eos) throws Exception;

  /**
   * 数据操作日志 >>> 条件删除
   */
  public void removeQuery(@Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 数据量
   */
  public Long count(@Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 主键查询
   */
  public DataManipulationLog pk(@Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 查询
   */
  public Collection<DataManipulationLog> query(@Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 分页
   */
  public Collection<DataManipulationLog> paging(@Param("paging") Paging<?> paging, @Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 业务数据量
   */
  public Long countVo(@Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 业务主键查询
   */
  public DataManipulationLogVO pkVo(@Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 业务查询
   */
  public Collection<DataManipulationLogVO> queryVo(@Param("qo") DataManipulationLogQO qo) throws Exception;

  /**
   * 数据操作日志 >>> 业务分页
   */
  public Collection<DataManipulationLogVO> pagingVo(@Param("paging") Paging<?> paging, @Param("qo") DataManipulationLogQO qo) throws Exception;

}
